#include <iostream>
using namespace std;
#include "tcpserver.hpp"
#include "protocol.hpp"
#include"servercal.hpp"



// 代码测试， 序列化反序列化没问题
// int main()
// {
//     Request req(1, 2, '+');
//     string content;
//     req.Serialize(&content);
//     string package = Encode(content);

//     cout << package << endl;

//     content.clear();
//     Decode(package, &content);
//     cout << content << endl;
//     Request res;
//     res.DeSerialize(content);
//     cout << res.x_ << " " << res.op_ << " " << res.y_ << endl;

//     return 0;
// }


void Usage(string proc)
{
    cout << "Usage: " << proc << endl;
}


int main(int argc, char* argv[])
{
    if (argc != 2)
    {
        Usage(argv[0]);
        exit(0);         
    }
    uint16_t port = stoi(argv[1]);

    ServerCal cal;
    function<string(string&)> func = bind(&ServerCal::Calculater, &cal, std::placeholders::_1);

    TcpServer* tsvp = new TcpServer(port, func);
    tsvp->Init();
    tsvp->Start();

    
    

    return 0;
}
